﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Data.Common;
using ProyectoSIETE.Properties;
using System.Configuration;
using ENProyecto7;
//using CADProyectoSIETE;
using System.Collections;

namespace ProyectoSIETE
{
    public partial class frmBuscador : Form
    {
        public frmBuscador()
        {
            InitializeComponent();
        }

        public SqlConnection conexion;
        private void frmBuscador_Load(object sender, EventArgs e)
        {
            try
            {
                cbCriterio.SelectedIndex = 0;
                string aux = Settings.Default.BDProyecto7ConnectionString;
                conexion = new SqlConnection(aux);
                conexion.Open();
                /*ObjetoCAD cadobjeto = new ObjetoCAD();
                int i = 0;
                foreach (DataRow fila in cadobjeto.obtenerTipoObjetos().Rows)
                {
                    treeView1.Nodes[2].Nodes[i]=new TreeNode();
                    treeView1.Nodes[2].Nodes[i].Name=fila[1].ToString();
                    i++;
                }*/
            }
            catch
            {
                MessageBox.Show("Error en la bd","Error");
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            TreeNode actual=treeView1.TopNode;
            RecorrerCheck(actual);
        }

        private void RecorrerCheck(TreeNode nodo){
            while (nodo != null)
            {
                nodo.Checked = checkBox1.Checked;
                if(nodo.Nodes.Count>0){
                    for (int i = 0; i<nodo.Nodes.Count; i++ ){
                        RecorrerCheck(nodo.Nodes[i]);
                    }
                }
                nodo = nodo.NextNode;
            }
        }

        private void btBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                bool coincidencia = false;
                epBuscador.SetError(tbBusqueda, "");
                //Inicializo los datagreedview
                ArrayList ini=new ArrayList();
                dgvPersonajes.DataSource=ini;
                dgvEnemigos.DataSource = ini;
                dgvLocalizaciones.DataSource = ini;
                dgvMapas.DataSource = ini;
                dgvMisiones.DataSource = ini;
                dgvObjetos.DataSource = ini;
                dgvUsuarios.DataSource = ini;
                string nom_des;
                if(cbCriterio.SelectedIndex==0){
                    nom_des = "nombre";
                }
                else{
                    nom_des = "descripcion";
                }
                //Personajes, solo va cuando el criterio es el nombre
                if (treeView1.Nodes[0].Checked && nom_des == "nombre")
                {
                    int vidadesde = -1, vidahasta = -1;
                    DataTable listaresultados = new DataTable();
                    ENPersonaje personajeen = new ENPersonaje();
                    if (tbVidaDesde.Text != "")
                    {
                        vidadesde = int.Parse(tbVidaDesde.Text);
                    }
                    if (tbVidaHasta.Text != "")
                    {
                        vidahasta = int.Parse(tbVidaHasta.Text);
                    }
                    listaresultados = personajeen.obtenerPersonajeNombre(tbBusqueda.Text, vidadesde, vidahasta);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvPersonajes.DataSource = listaresultados;
                        dgvPersonajes.Refresh();
                        coincidencia = true;
                        tabControl1.SelectedIndex = 1;
                    }
                }
                //Enemigos, solo va cuando el criterio es el nombre
                if (treeView1.Nodes[1].Checked && nom_des == "nombre")
                {
                    int vidadesde = -1, vidahasta = -1;
                    DataTable listaresultados = new DataTable();

                    ENEnemigo enemigoen = new ENEnemigo();
                    enemigoen.NombreEnemigo = tbBusqueda.Text;
                    if (tbVidaDesde.Text != "")
                    {
                        vidadesde = int.Parse(tbVidaDesde.Text);
                    }
                    if (tbVidaHasta.Text != "")
                    {
                        vidahasta = int.Parse(tbVidaHasta.Text);
                    }
                    listaresultados = enemigoen.obtenerEnemigoNombre(vidadesde, vidahasta);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvEnemigos.DataSource = listaresultados;
                        dgvEnemigos.Refresh();
                        if (!coincidencia)
                        {
                            tabControl1.SelectedIndex = 0;
                            coincidencia = true;
                        }
                    }
                }
                //Objetos
                if (treeView1.Nodes[2].Checked)
                {
                    DataTable listaresultados = new DataTable();
                    ENObjeto objetoen = new ENObjeto();

                    listaresultados = objetoen.obtenerObjetoNombre(tbBusqueda.Text, nom_des);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvObjetos.DataSource = listaresultados;
                        dgvObjetos.Refresh();
                        if (!coincidencia)
                        {
                            tabControl1.SelectedIndex = 2;
                            coincidencia = true;
                        }
                    }
                }
                //Mapas
                if (treeView1.Nodes[3].Checked)
                {
                    DataTable listaresultados = new DataTable();
                    ENMapa mapaen = new ENMapa();
                    mapaen.NombreMapa=tbBusqueda.Text;

                    listaresultados = mapaen.obtenerMapaNombre(nom_des);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvMapas.DataSource = listaresultados;
                        dgvMapas.Refresh();
                        if (!coincidencia)
                        {
                            tabControl1.SelectedIndex = 3;
                            coincidencia = true;
                        }
                    }
                }
                //Misiones
                if (treeView1.Nodes[4].Checked)
                {
                    DataTable listaresultados = new DataTable();
                    ENMision misionen = new ENMision();
                    misionen.NombreMision = tbBusqueda.Text;
                    listaresultados = misionen.obtenerMisionNombre(nom_des);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvMisiones.DataSource = listaresultados;
                        dgvMisiones.Refresh();
                        if (!coincidencia)
                        {
                            tabControl1.SelectedIndex = 4;
                            coincidencia = true;
                        }
                    }
                }
                //Localizaciones
                if (treeView1.Nodes[5].Checked)
                {
                    DataTable listaresultados = new DataTable();
                    ENLocalizacion localizacionen = new ENLocalizacion();
                    localizacionen.NombreLocalizacion=tbBusqueda.Text;
                    listaresultados = localizacionen.obtenerLocalizacionNombre(nom_des);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvLocalizaciones.DataSource = listaresultados;
                        dgvLocalizaciones.Refresh();
                        if (!coincidencia)
                        {
                            tabControl1.SelectedIndex = 5;
                            coincidencia = true;
                        }
                    }
                }

                //Usuarios
                if (treeView1.Nodes[6].Checked)
                {
                    DataTable listaresultados = new DataTable();
                    ENUsuario usuarioen = new ENUsuario();

                    listaresultados = usuarioen.obtenerUsuarioNombre(tbBusqueda.Text, nom_des);

                    if (listaresultados.Rows.Count > 0)
                    {
                        dgvUsuarios.DataSource = listaresultados;
                        dgvUsuarios.Refresh();
                        if (!coincidencia)
                        {
                            tabControl1.SelectedIndex = 6;
                            coincidencia = true;
                        }
                    }
                }

                if(!coincidencia){
                    MessageBox.Show("No se ha encontrado ninguna coincidencia", "Error", MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK);
            }
        }

        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            /*if (treeView1.Nodes[2].Checked != treeView1.Nodes[2].Nodes[0].Checked && !treeView1.Nodes[2].Checked)
            {
                treeView1.Nodes[2].Nodes[0].Checked = treeView1.Nodes[2].Checked;
            }
            if (treeView1.Nodes[2].Checked != treeView1.Nodes[2].Nodes[1].Checked && !treeView1.Nodes[2].Checked)
            {
                treeView1.Nodes[2].Nodes[1].Checked = treeView1.Nodes[2].Checked;
            }
            if (treeView1.Nodes[2].Checked != treeView1.Nodes[2].Nodes[2].Checked && !treeView1.Nodes[2].Checked)
            {
                treeView1.Nodes[2].Nodes[2].Checked = treeView1.Nodes[2].Checked;
            }
            if (treeView1.Nodes[2].Checked != treeView1.Nodes[2].Nodes[3].Checked && !treeView1.Nodes[2].Checked)
            {
                treeView1.Nodes[2].Nodes[3].Checked = treeView1.Nodes[2].Checked;
            }*/
            if (!treeView1.Nodes[0].Checked && !treeView1.Nodes[1].Checked)
            {
                label4.Enabled = false;
                label5.Enabled = false;
                label6.Enabled = false;
                tbVidaDesde.Enabled = false;
                tbVidaHasta.Enabled = false;
                label1.Visible = true;
            }
            else
            {
                label4.Enabled = true;
                label5.Enabled = true;
                label6.Enabled = true;
                tbVidaDesde.Enabled = true;
                tbVidaHasta.Enabled = true;
                label1.Visible=false;
            }
        }

        private void btVolver_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void label8_Click(object sender, EventArgs e)
        {

        }
    }
}
